As is known, the use of client/server architecture has gained wide acceptance in the field of computing. This is due to its numerous advantages comprising the interoperability of heterogenous systems, the ability to install applications or data on a server for use by numerous disparate clients, the ability of a server to interoperate with clients over a network that are disposed at geographically diverse locations, as well as the overall scalability and versatility of the architecture. From time to time, a server may become unavailable due to a variety of reasons comprising a system failure on the part of the server or scheduled maintenance. When a server suddenly and unexpectedly stops responding to a client over a network, the client has traditionally continued to poll the network by sending requests to the server and listening for a response in an attempt to re-establish contact with the server. If the server has experienced a failure or will be down for an extended period of time for some other reason, attempts by the client to re-establish contact with the server are futile and, in fact, waste valuable network bandwidth. In the case where there are numerous clients simultaneously attempting to re-establish contact with a given server that has gone down, futile and wasteful consumption of network bandwidth is exacerbated which can lead to overutilization and secondary failure of the network.
There is a need in the art to enable a client to re-establish a network connection to a server, subsequent to the server becoming unavailable over the network, more efficiently than client network polling for the server which has traditionally been done. The present invention provides the advantage of efficiently re-establishing a connection between a client and a server while minimizing wasted consumption of network bandwidth. There are several methods and apparatus for handling server system failures and re-establishing connections between client and server systems as described in the following U.S. Letters Patents:    U.S. Pat. No. 5,140,689—Kobayashi    U.S. Pat. No. 5,734,810—Tanaka et al.    U.S. Pat. No. 6,018,805—Ma et al.    U.S. Pat. No. 6,049,892—Casagrande et al.    U.S. Pat. No. 6,065,053—Nouri et al.    U.S. Pat. No. 6,145,094—Shirriff et al.
U.S. Pat. No. 5,140,689 describes a system and method whereby client/server workload processing is performed in two phases. A client requests that servers perform PHASE I processing. When all servers have completed PHASE I processing, the client stores information indicating this completion. If a server goes down and is subsequently restarted, the server first inquires with the client as to whether all servers have completed PHASE I processing. If completion of PHASE I processing is so indicated by the client, the server begins PHASE II processing. However, if the client indicates that not all servers have completed PHASE I processing, the server that went down performs rollback processing to PHASE I, and the client requests that servers which have completed PHASE I processing rollback to PHASE I processing.
U.S. Pat. No. 5,734,810 describes a system and method for reconnecting a server and a plurality of clients over a network subsequent to a shutdown of the server. The server sends shutdown forecast information to the clients subsequent to detection of a failure in the server, but prior to a shutdown of the server. Clients receiving the shutdown forecast information set a shutdown flag to “on”, and thereafter repeatedly attempt to establish a network connection with the server. Once a network connection has been established, the shutdown flag is set to “off” and normal processing resumes. In an alternative embodiment, the shutdown forecast information includes a scheduled restoration time of the server and the clients wait until such time prior to attempting to establish a network connection with the server. The invention of the instant application obviates the need for the repeated client attempts to establish a network connection with a server described in U.S. Pat. No. 5,734,810.
U.S. Pat. No. 6,018,805 describes a distributed-object software application and method for recovering from a server crash. A software application comprises a client object resident on a client system and a server object resident on a server system. An intelligent proxy on the client system detects a server crash when no response is received from the server object. The intelligent proxy saves the state of the unresponsive server object and sends the name of the server object to a locator server which contains a directory of objects and the systems on which they are running. The locator server looks up the name of the unresponsive server object and sends a remote reference that points to another instance of the server object which is running on another server to the intelligent proxy. If no other running instance of the server object exists, the locator server creates an instance by loading the server object onto another server system and sending a remote reference that points to this instance to the intelligent proxy. The intelligent proxy uses the state information that was saved at the time of server crash detection to advance the state of the server object instance pointed to by the remote reference to the state that existed prior to the server crash. The server object instance pointed to by the remote reference is then used to process requests from the client object.
U.S. Pat. No. 6,049,892 describes a process for downloading a data file from a server computer to a client computer. A client program, specialized for performing downloads, may be stored on the server. Responsive to a request to download a file, the client program is downloaded to the client first. The client program may then be executed on the client to transfer the requested file from the server. The client program monitors the progress of the file transfer from the server and tracks the amount of data in the file that has been reliably received by the client. In the event of a download failure, the download is automatically restarted by the client program at a point in the file immediately after the data that has already been received thus obviating the need for re-transmission of data.
U.S. Pat. No. 6,065,053 describes a system for resetting a server computer from either a local or remote client computer. The server includes a microcontroller that is configured to reset the central processing unit of the server allowing the server to be restarted following, for example, an unexpected crash. The microcontroller is connected to a remote interface which is in turn connected to a local or remote client using a null-modem serial cable or a pair of modems, respectively. Using this series of connections, a local or remote client may reset a server, subsequent to which, the remote interface may communicate the results of the reset back to the local or remote client.
U.S. Pat. No. 6,145,094 describes a method and apparatus in a client/server environment for switching operations from a primary server to a secondary server in the event of a failure of the primary server. When an operation on the primary server acquires exclusive access to a shared resource, a message is sent to the secondary server indicating which operation has such exclusive access. The message is used to update state information at the secondary server so as to indicate that the operation on the primary server has exclusive access to the shared resource. Upon receiving notification that the primary server has failed, the secondary server acts as a new primary server. Having maintained state information with respect to the operation on the primary server having exclusive access to the shared resource, the secondary server acquires exclusive access to the shared resource and completes the operation in response to a re-try request from a client of the primary server to access the shared resource, thus providing a smooth transition from the primary server to the secondary server.
It is believed, therefore, than a system and method for enabling a client to re-establish a network connection with a server that provides the many advantages taught herein would constitute a significant advancement in the art.